package com.pisolution.scheduler.core.utils;

import java.util.concurrent.atomic.AtomicBoolean;

/**
 * 线程执行辅助工具 用于确认线程当前的状态.
 *
 * @author sora
 * @version 0.1.0
 */
public final class Stopper {
    /** 当前信号状态. */
    private static final AtomicBoolean SIGNAL = new AtomicBoolean(false);

    // -------------------------------------------------------------------------------------------------
    //  状态查询
    // -------------------------------------------------------------------------------------------------

    /**
     * 查询线程是否正在运行.
     *
     * @return 如果正在运行则返回 {@code true} 否则返回 {@code false}.
     */
    public static boolean isRunning() {
        return !SIGNAL.get();
    }

    /**
     * 查询线程是否已经停止.
     *
     * @return 如果已经停止则返回 {@code true} 否则返回 {@code false}.
     */
    public static boolean isStopped() {
        return SIGNAL.get();
    }

    // -------------------------------------------------------------------------------------------------
    //  状态切换
    // -------------------------------------------------------------------------------------------------

    /**
     * 切换线程状态为停止状态.
     */
    public static void stop() {
        SIGNAL.set(true);
    }

    // -------------------------------------------------------------------------------------------------

    /** 阻止实例化. */
    private Stopper() {
    }
}
